Consigna inicial:

Utilizando el set de datos ar_properties.csv, construir un dataset más pequeño que tenga las propiedades de Boedo, Colegiales, Centro / Microcentro, Mataderos y Puerto Madero. Cuántas propiedades hay en cada barrio?

datos <- read.csv("ar_properties.csv")
filtro_barrios <- is.element(datos$l3,"Boedo") |
                              is.element(datos$l3,"Colegiales") |
                              is.element(datos$l3,"Centro / Microcentro") |
                              is.element(datos$l3,"Mataderos") |
                              is.element(datos$l3,"Puerto Madero")
filtro_localidad <- is.element(datos$l2,"Capital Federal")
filtro_pais <- is.element(datos$l1,"Argentina")
filtros <- filtro_pais & filtro_localidad & filtro_barrios

datos_filtrados <- datos[filtros,]
datos_filtrados

Tamaño de las propiedades

  1. A partir de los datos,¿existen propiedades con datos faltantes en términos de superficie y número de ambientes?

Propiedades con superficie total faltante:

nrow(datos_filtrados[is.na(datos_filtrados$surface_total),])
## [1] 722

Propiedades con superficie cubierta faltante:

nrow(datos_filtrados[is.na(datos_filtrados$surface_covered),])
## [1] 931

Propiedades con número de ambientes faltante:

nrow(datos_filtrados[is.na(datos_filtrados$rooms),])
## [1] 3088

Propiedades con número de ambientes y superficie faltante:

nrow((datos_filtrados[is.na(datos_filtrados$rooms)&is.na(datos_filtrados$surface_total),]))
## [1] 313
  1. Visualizar la superficie y número de habitaciones en cada barrio. Sugerencia: Construir histogramas para las superficies, y barplots para el número de habitaciones

#Superficies por barrio

hist(datos_filtrados$surface_covered[datos_filtrados$l3=="Boedo"],
     col="green4", main = "Superficie en Boedo", right=TRUE, 
     breaks = 50, xlim=c(1,600), xlab = "Metros cuadrados totales",
     ylab="Cantidad")

hist(datos_filtrados$surface_covered[datos_filtrados$l3=="Boedo"],
     col="green4", main = "Superficie en Boedo (hasta 100 metros
     cuadrados)", right=TRUE, breaks = 1000, xlim=c(1,100), xlab =
    "Metros cuadrados totales",ylab="Cantidad")

barplot(sort(table(datos_filtrados$rooms[datos_filtrados$l3==
            "Boedo"]),decreasing=TRUE), cex.names=1.4,
            col="green4",main="Cantidad de Ambientes en Boedo", ylim=c(0,250))

hist(datos_filtrados$surface_covered[datos_filtrados$l3==
                                       "Colegiales"],col="blue4", main = "Superficie en Colegiales", right=TRUE, 
     breaks = 750, xlim=c(1,900), xlab = "Metros cuadrados 
     totales",ylab="Cantidad")

hist(datos_filtrados$surface_covered[datos_filtrados$l3=="Colegiales"],
     col="blue4", main = "Superficie en Colegiales (hasta 100 metros
     cuadrados)", right=TRUE, 
     breaks = 1000, xlim=c(1,100), xlab = "Metros cuadrados 
     totales",ylab="Cantidad")

barplot(sort(table(datos_filtrados$rooms[datos_filtrados$l3==
            "Colegiales"]),decreasing=TRUE), cex.names=1.4,
            col="blue4",main="Cantidad de Ambientes en
            Colegiales", ylim=c(0,350))

hist(datos_filtrados$surface_covered[datos_filtrados$l3==
    "Centro / Microcentro"], col="red4", main = "Superficie
    en Centro / Microcentro ", right=TRUE, breaks = 750,
     xlab = "Metros cuadrados totales",
    ylab="Cantidad", xlim=c(1,1000))

hist(datos_filtrados$surface_covered[datos_filtrados$l3==
    "Centro / Microcentro"], col="red4", main = "Superficie
    en Centro / Microcentro (hasta 100 metros
     cuadrados)", right=TRUE, breaks = 10000,xlab = "Metros cuadrados totales",
    ylab="Cantidad", xlim=c(1,200))

barplot(sort(table(datos_filtrados$rooms[datos_filtrados$l3==
        "Centro / Microcentro"]),decreasing=TRUE),
        cex.names=1.4, col="red4",main="Cantidad de Ambientes en
        Centro / Microcentro", ylim=c(0,350))

hist(datos_filtrados$surface_covered[datos_filtrados$l3==
    "Puerto Madero"], col="orange3", main = "Superficie en 
    Puerto Madero", right=TRUE,breaks = 750, xlim=c(1,1000), xlab = "Metros cuadrados totales",ylab="Cantidad")

hist(datos_filtrados$surface_covered[datos_filtrados$l3==
    "Puerto Madero"], col="orange3", main = "Superficie en 
    Puerto Madero (hasta 100 metros
     cuadrados)", right=TRUE,breaks = 5000, xlim=c(1,200), xlab = "Metros cuadrados totales",ylab="Cantidad")

barplot(sort(table(datos_filtrados$rooms[datos_filtrados$l3==
            "Puerto Madero"]),decreasing=TRUE), cex.names=1.4,
            col="orange3",main="Cantidad de Ambientes en Puerto
            Madero", ylim=c(0,350))

#3. A partir de los gráficos realizados en el punto anterior, explorar la posibilidad de que haya datos faltantes que estén codificados de otra forma.

Hay propiedades que figuran con una superficie total de 0 metros cuadrados, lo cual es imposible. Podemos pensar que son datos faltantes codificados como 0.

  1. Caracterizar la superficie de una propiedad típica de este dataset usando promedio, desvío estandar, mediana y cuartiles. Calcular estas magnitudes para cada barrio y presentarlas en una tabla que permita compararlas. A partir de esta tabla, responder:
  1. ¿Cómo es el promedio comparado con la mediana?
  2. ¿Entre qué valores varían las superficies?
  3. ¿Dónde está la propiedad con superficie más grande?
  4. ¿Dónde varía más el tamaño de las propiedades?

Promedio de Superficie

barrios <- unique(datos_filtrados$l3)
barrios <- barrios[!is.na(barrios)]
barrios <- droplevels(barrios)
promedio <- c()
desvio <- c()
mediana <- c()
minimo <- c()
maximo <- c()
Cuartil1 <- c()
cuartil3 <- c()
for (barrio in barrios) {
  promedio <- c(promedio,
                mean(datos_filtrados$surface_total
                     [datos_filtrados$l3==barrio],na.rm = T))
  desvio <- c(desvio, sd(datos_filtrados$surface_total
                     [datos_filtrados$l3==barrio],na.rm = T))
  mediana <- c(mediana, median(datos_filtrados$surface_total
                     [datos_filtrados$l3==barrio],na.rm = T))
  minimo <- c(minimo, min(datos_filtrados$surface_total
                     [datos_filtrados$l3==barrio],na.rm = T))
  maximo <- c(maximo, max(datos_filtrados$surface_total
                     [datos_filtrados$l3==barrio],na.rm = T))
  Cuartil1 <- c(Cuartil1, quantile(datos_filtrados$surface_total
                     [datos_filtrados$l3==barrio],na.rm = T, 
                     probs = 0.25))
   cuartil3 <- c(cuartil3, quantile(datos_filtrados$surface_total
                     [datos_filtrados$l3==barrio],na.rm = T, 
                     probs = 0.75))
}

resumen <- data.frame(Barrio=barrios, Minimo=minimo, C1=Cuartil1, C2=mediana, Promedio=promedio, C3=cuartil3, Maximo=maximo, Desvio_Standar=desvio)
resumen

4.a En todos los casos el promedio es muy superior a la mediana.

4.b Boedo entre 10 y 12700 Colegiales entre y 4500 Centro / Microcentro entre 10 y 23400 Puerto Madero entre 0 y 10400 Mataderos entre 18 y 2700

4.c El barrio con la superficie más grande es Centro / Microcentro

4.d En el barrio que más varían las superficies es Centro / Microcentro

#5 Construir boxplot sum(datos_filtrados\(surface_covered[datos_filtrados\)l3==barrio],paralelos para la superficie y el número de habitaciones, separados por barrio.

datos_filtrados$l3 <- droplevels(datos_filtrados$l3)
boxplot(surface_total ~ l3, datos_filtrados, pch=18,las=0, outline=FALSE, cex.axis=0.7)

boxplot(rooms ~ l3, datos_filtrados, pch=18, outline=FALSE, cex.axis=0.7)

#6 Explorar el tamaño de una habitación promedio en los distintos barrios. Construir esta variable con el nombre surface_covered / rooms

hab_prom <- c()
for (barrio in barrios){
    hab_prom <- c(hab_prom,mean(datos_filtrados$surface_covered[datos_filtrados$l3==barrio]/
                                  datos_filtrados$rooms[datos_filtrados$l3==barrio], na.rm = T))
}
resumen$Habitacion_promedio <- hab_prom
resumen
barplot(resumen$Habitacion_promedio, names.arg = resumen$Barrio, cex.names = 0.7)

#2. Relación entre el precio y las caracterı́sticas de una propieda. Retener únicamente las propiedades cuyo precio esté en dolares.

datos_filtr_usd <- datos_filtrados[is.element(datos_filtrados$currency,"USD"),]
datos_filtr_usd
  1. Construir la variable fondo, calculada como surface total - surface covered.
datos_filtr_usd$fondo <- datos_filtr_usd$surface_total-datos_filtr_usd$surface_covered
datos_filtr_usd 
colores=c("gray2", "blue", "red")

datos_filtr_usd$operation_type <- factor(datos_filtr_usd$operation_type, levels = c("Venta", "Alquiler", "Alquiler temporal"))

plot(jitter(datos_filtr_usd$surface_total), jitter(datos_filtr_usd$price), main="Precio por superficie total", type="p",xlab="Superficie Total", ylab="Precio (USD)", xlim = c(0,500), ylim = c(0,2000000),col =colores[datos_filtr_usd$operation_type])
legend("topright",legend=levels(datos_filtr_usd$operation_type), fill=colores)

plot(datos_filtr_usd$surface_total, log(datos_filtr_usd$price), main="Precio por superficie total (log)", type="p",xlab="Superficie Total", ylab="Precio (USD)",xlim = c(0,2000),col =colores[datos_filtr_usd$operation_type] )
legend("topright",legend=levels(datos_filtr_usd$operation_type), fill=colores)

plot(jitter(datos_filtr_usd$surface_covered), jitter(datos_filtr_usd$price), main="Precio por superficie Cubierta", type="p",xlab="Superficie Cubierta", ylab="Precio (USD)", xlim = c(0,500), ylim = c(0,1000000),col =colores[datos_filtr_usd$operation_type])

smoothScatter(datos_filtr_usd$surface_covered, datos_filtr_usd$price, main="Precio por superficie Cubierta",xlab="Superficie Cubierta", ylab="Precio (USD)",xlim = c(0,500), ylim = c(0,1000000) )
legend("topright",legend=levels(datos_filtr_usd$operation_type), fill=colores)

plot(jitter(datos_filtr_usd$surface_covered), log(datos_filtr_usd$price), main="Precio por superficie Cubierta (log)", type="p",xlab="Superficie Cubierta", ylab="Precio (USD)", xlim = c(0,2000),col =colores[datos_filtr_usd$operation_type])
legend("topright",legend=levels(datos_filtr_usd$operation_type), fill=colores)

plot(jitter(datos_filtr_usd$fondo[datos_filtr_usd$fondo>0]), jitter(datos_filtr_usd$price[datos_filtr_usd$fondo>0]), main="Precio por fondo", type="p",xlab="Fondo", ylab="Precio (USD)",col =colores[datos_filtr_usd$operation_type],xlim=c(0,50),ylim=c(0,300000))
legend("topright",legend=levels(datos_filtr_usd$operation_type), fill=colores)

plot(log(jitter(datos_filtr_usd$fondo[datos_filtr_usd$fondo>0])), log(jitter(datos_filtr_usd$price[datos_filtr_usd$fondo>0])), main="Precio por fondo (log)", type="p",xlab="Fondo", ylab="Precio (USD)",col =colores[datos_filtr_usd$operation_type],xlim=c(0,5))
## Warning in log(jitter(datos_filtr_usd$price[datos_filtr_usd$fondo > 0])): Se
## han producido NaNs
legend("topright",legend=levels(datos_filtr_usd$operation_type), fill=colores)

datos_filtr_usd$hab_prom <- datos_filtr_usd$surface_covered/datos_filtr_usd$rooms

plot(datos_filtr_usd$hab_prom, datos_filtr_usd$price, main="Precio por Habitacion Promedio", type="p",xlab="Habitación promedio (en m2)", ylab="Precio (USD)",xlim = c(0,100),ylim = c(0,6000),col =colores[datos_filtr_usd$operation_type])
legend("topright",legend=levels(datos_filtr_usd$operation_type), fill=colores)

plot(datos_filtr_usd$hab_prom, log(datos_filtr_usd$price), main="Precio por Habitacion Promedio (log)", type="p",xlab="Habitación promedio (en m2)", ylab="Precio (USD)", xlim = c(0,80), col =colores[datos_filtr_usd$operation_type])
legend("topright",legend=levels(datos_filtr_usd$operation_type), fill=colores)